Multiline Tables in Markdown++

Multiline tables in Markdown++ provide an enhanced way to organize detailed content across multiple lines, allowing for more readable and flexible structures. Unlike standard tables, multiline tables allow rows to span multiple lines by using a special tag and structured spacing.

Introduction

Multiline tables are very similar to regular Markdown tables, but they are more flexible when it comes to the table structure. In Markdown++, multiline tables are indicated by placing a <!-- multiline --> tag directly above the table. Additionally, a new row is created by adding a row of cells that are either empty or contain only whitespace.

A key feature of multiline tables is that you can include full block Markdown elements within cells, such as lists, code blocks, or paragraphs. This makes multiline tables particularly useful when content within a cell becomes too detailed to fit conveniently on a single line. By utilizing multiline tables, writers can keep content organized and easier to edit.

Syntax

Multiline tables in Markdown++ consist of the same main elements as standard tables:

  • A header row, which contains header cell content separated by | characters.

  • An alignment row, which indicates the alignment of the body cells' text. Each cell in this row contains at least 3 - characters, and an optional : character to indicate alignment. Each cell is separated by a | character.

    • Default alignment only uses - characters; 3 or more.

    • Left align the column by starting the cell with : and filling in the rest with : characters; 3 or more.

    • Right align the column by starting the cell with 3 or more - characters, ending with a : character.

    • Center align the column by starting and ending the cell with : characters. Put - characters between them; 3 or more.

  • 1 or more body rows, that contain body cell content separated by | characters.

The key difference is the <!-- multiline --> tag and the ability to use blank rows to create new table rows, along with the capability to write full block Markdown inside cells.

Multiline Tag

To use a multiline table, add the following tag directly above your table:

<!-- multiline -->

This tag tells Markdown++ to treat the following table as a multiline table.

Creating New Rows

To create a new row, simply add a row of cells that are either empty or contain only whitespace. This indicates to Markdown++ that the next line of cells should be treated as part of a new row.

Basics

Below is an example of a multiline table:

<!-- multiline -->
| name | details                   |
|------|--------------------------|
| Bob  | Lives in Dallas.         |
|      | - Enjoys cycling         |
|      | - Loves cooking          |
|      |                          |
| Mary | Lives in El Paso.        |
|      | - Works as a teacher     |
|      | - Likes painting         |

In this example, the empty row acts as a separator, creating a break before the next row. Notice how detailed information, including lists, is included within a cell.

You can also use multiline tables without wrapping | characters:

<!-- multiline -->
 name | details
------|--------------------------
 Bob  | Lives in Dallas.
      | - Enjoys cycling
      | - Loves cooking
      |
 Mary | Lives in El Paso.
      | - Works as a teacher
      | - Likes painting

Alignment in Multiline Tables

Just like with standard tables, multiline tables can have different alignments for each column.

Left-align the text of cells in a column by starting the alignment cell with ::

<!-- multiline -->
| name | details                  |
|:-----|-------------------------|
| Bob  | Lives in Dallas.        |
|      | - Enjoys cycling        |
|      | - Loves cooking         |
|      |                         |
| Mary | Lives in El Paso.       |
|      | - Works as a teacher    |
|      | - Likes painting        |

Center-align the text of cells in a column by starting and ending the alignment cell with ::

<!-- multiline -->
|  name  | details                 |
|:------:|-------------------------|
|  Bob   | Lives in Dallas.        |
|        | - Enjoys cycling        |
|        | - Loves cooking         |
|        |                         |
|  Mary  | Lives in El Paso.       |
|        | - Works as a teacher    |
|        | - Likes painting        |
Markdown In Multiline Tables

Multiline tables can also include full Markdown blocks, such as code blocks or lists:

<!-- multiline -->
| name     | hobbies                 |
|----------|-------------------------|
| **Bob**  | - Biking                |
|          | - Cooking               |
|          | - Reading               |
|          |                         |
| **Mary** | Here is a code example: |
|          |                         |
|          | ```                     |
|          | function greet() {      |
|          |     console.log("Hi");  |
|          | }                       |
|          | ```                     |

Including full Markdown blocks like code and lists helps emphasize complex content within cells, making tables more versatile.

Markdown++ Custom Styles

A custom Table Style can be given to a multiline Table by putting the style: and multiline commands in the same comment tag, separated by a ; character. Do not put the commands in separate stacked tags — only the bottom tag would attach to the table:

<!--style:CustomTable; multiline -->
| name | description                  |
|------|-----------------------------|
| Bob  | - Loves biking              |
|      | - Enjoys programming        |
|      |                             |
| Mary | A passionate teacher.       |
|      | - Loves painting            |
|      | - Enjoys hiking             |
Content in Cells

Inline text content can be further customized using the inline tag convention, and multiple commands can be used in a single tag:

<!-- multiline -->
| name                          | age | city    |
|-------------------------------|-----|---------|
| <!--style:CustomText-->*Bob*  | 42  | Dallas  |
|                               |     |         |
| <!--style:CustomText-->*Mary* | 37  | El Paso |

To learn more about Markdown++ tagging, see Learning Markdown++.

ePublisher Style Information

Style Behavior

In order to style a multiline Table and its cells in detail, the same styles are needed as with standard tables in ePublisher. A multiline table gets 3 styles when detected in a document: Table, Table Cell Head, and Table Cell Body.

Table Style

The Table Style is the primary style that ePublisher adds when a multiline table is detected. The default name is Table, but this can be customized using a Markdown++ style: command.

Customizing the Table Style

By combining a custom style: command with the multiline command in the same comment tag, the Table Style name can be changed:

<!--style:CustomTable; multiline -->
| name | age | city    |
|------|-----|---------|
| Bob  | 42  | Dallas  |
|      |     |         |
| Mary | 37  | El Paso |
Header & Body Cell Styles

Header and body cell styles function in the same way for multiline tables as they do for standard tables. Each header cell gets a Table Cell Head style, and each body cell gets a Table Cell Body style. These styles can also be customized if the Table Style is given a custom name:

<!--style:CustomTable; multiline -->
| name | age | city    |
|------|-----|---------|
| Bob  | 42  | Dallas  |
|      |     |         |
| Mary | 37  | El Paso |

Default Style Properties

Style Type: Table, Paragraph
Style Name: Table, Table Cell Head, Table Cell Body

Table

Property

Value

border top color

#222222

border top style

solid

border top width

1px

border right color

#222222

border right style

solid

border right width

1px

border bottom color

#222222

border bottom style

solid

border bottom width

1px

border left color

#222222

border left style

solid

border left width

1px

Table Cell Head

Property

Value

font family

Arial

font size

11pt

font weight

bold

padding top

6pt

padding right

6pt

padding bottom

6pt

padding left

6pt

Table Cell Body

Property

Value

font family

Arial

font size

11pt

padding top

6pt

padding right

6pt

padding bottom

6pt

padding left

6pt

If a custom style name is assigned to a multiline Table, the style names will still inherit all of the listed default style information.

Last modified date: 2025-11-07